/*
 * This code is part of MaNGOS. Contributor & Copyright details are in AUTHORS/THANKS.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef MANGOSSERVER_MOVEMENT_STRUCTURES_H
#define MANGOSSERVER_MOVEMENT_STRUCTURES_H

enum MovementStatusElements
{
    MSEFlags,
    MSEFlags2,
    MSETimestamp,
    MSEHasPitch,
    MSEGuidBit0,
    MSEGuidBit1,
    MSEGuidBit2,
    MSEGuidBit3,
    MSEGuidBit4,
    MSEGuidBit5,
    MSEGuidBit6,
    MSEGuidBit7,
    MSEHasUnknownBit,
    MSEHasUnknownBit2,
    MSEUnknownCount,
    MSEHasUnkInt32,
    MSEHasMovementFlags,
    MSEHasMovementFlags2,
    MSEHasTimestamp,
    MSEHasOrientation,
    MSEHasFallData,
    MSEHasFallDirection,
    MSEHasTransportData,
    MSEHasTransportTime2,
    MSEHasTransportTime3,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit2,
    MSETransportGuidBit3,
    MSETransportGuidBit4,
    MSETransportGuidBit5,
    MSETransportGuidBit6,
    MSETransportGuidBit7,
    MSEHasSpline,
    MSEHasSplineElevation,
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEPositionO,
    MSEGuidByte0,
    MSEGuidByte1,
    MSEGuidByte2,
    MSEGuidByte3,
    MSEGuidByte4,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEPitch,
    MSEFallTime,
    MSETransportGuidByte0,
    MSETransportGuidByte1,
    MSETransportGuidByte2,
    MSETransportGuidByte3,
    MSETransportGuidByte4,
    MSETransportGuidByte5,
    MSETransportGuidByte6,
    MSETransportGuidByte7,
    MSESplineElevation,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSETransportSeat,
    MSETransportPositionO,
    MSETransportPositionX,
    MSETransportPositionY,
    MSETransportPositionZ,
    MSETransportTime,
    MSETransportTime2,
    MSETransportTime3,
    MSEMovementCounter,
    MSEUnknownArray,
    MSEUnkInt32,
    MSEEnd,
    MSE_COUNT
};

MovementStatusElements PlayerMoveSequence[] =
{
    MSEHasFallData,
    MSEGuidBit3,
    MSEGuidBit6,
    MSEHasMovementFlags2,
    MSEHasSpline,
    MSEHasTimestamp,
    MSEGuidBit0,
    MSEGuidBit1,
    MSEFlags2,
    MSEGuidBit7,
    MSEHasMovementFlags,
    MSEHasOrientation,
    MSEGuidBit2,
    MSEHasSplineElevation,
    MSEHasUnknownBit,
    MSEGuidBit4,
    MSEHasFallDirection,
    MSEGuidBit5,
    MSEHasTransportData,
    MSEFlags,
    MSETransportGuidBit3,
    MSEHasTransportTime3,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSETransportGuidBit7,
    MSETransportGuidBit0,
    MSETransportGuidBit4,
    MSEHasTransportTime2,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSEHasPitch,
    MSEGuidByte5,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSESplineElevation,
    MSEGuidByte7,
    MSEPositionY,
    MSEGuidByte3,
    MSETransportTime3,
    MSETransportGuidByte6,
    MSETransportSeat,
    MSETransportGuidByte5,
    MSETransportPositionX,
    MSETransportGuidByte1,
    MSETransportPositionO,
    MSETransportGuidByte2,
    MSETransportTime2,
    MSETransportGuidByte0,
    MSETransportPositionZ,
    MSETransportGuidByte7,
    MSETransportGuidByte4,
    MSETransportGuidByte3,
    MSETransportPositionY,
    MSETransportTime,
    MSEGuidByte4,
    MSEPositionX,
    MSEGuidByte6,
    MSEPositionZ,
    MSETimestamp,
    MSEGuidByte2,
    MSEPitch,
    MSEGuidByte0,
    MSEPositionO,
    MSEGuidByte1,
    MSEEnd,
};

MovementStatusElements MovementFallLandSequence[] =
{
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEHasTransportData,
    MSEGuidBit7,
    MSEGuidBit1,
    MSEHasMovementFlags2,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEHasOrientation,
    MSEGuidBit6,
    MSEHasTimestamp,
    MSEHasUnknownBit,
    MSEHasPitch,
    MSEGuidBit4,
    MSEHasSpline,
    MSEGuidBit5,
    MSEHasMovementFlags,
    MSEHasFallData,
    MSEGuidBit0,
    MSEGuidBit2,
    MSETransportGuidBit0,
    MSETransportGuidBit5,
    MSETransportGuidBit3,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSEHasTransportTime2,
    MSETransportGuidBit6,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSETransportGuidBit7,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte1,
    MSEGuidByte7,
    MSEGuidByte4,
    MSEGuidByte3,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte5,
    MSETransportTime,
    MSETransportPositionZ,
    MSETransportPositionY,
    MSETransportPositionX,
    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportGuidByte1,
    MSETransportSeat,
    MSETransportTime2,
    MSETransportGuidByte4,
    MSETransportPositionO,
    MSETransportGuidByte0,
    MSETransportGuidByte7,
    MSETransportGuidByte3,
    MSETransportGuidByte6,
    MSETransportGuidByte2,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSESplineElevation,
    MSETimestamp,
    MSEPitch,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementHeartBeatSequence[] =
{
    MSEPositionZ,
    MSEPositionX,
    MSEPositionY,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEHasFallData,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEGuidBit7,
    MSEGuidBit1,
    MSEGuidBit0,
    MSEGuidBit4,
    MSEGuidBit2,
    MSEHasOrientation,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEHasSpline,
    MSEHasUnknownBit,
    MSEGuidBit6,
    MSEHasMovementFlags,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSETransportGuidBit2,
    MSEHasTransportTime2,
    MSETransportGuidBit5,
    MSETransportGuidBit7,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSEHasFallDirection,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte3,
    MSEGuidByte6,
    MSEGuidByte1,
    MSEGuidByte7,
    MSEGuidByte2,
    MSEGuidByte5,
    MSEGuidByte0,
    MSEGuidByte4,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportPositionO,
    MSETransportGuidByte4,
    MSETransportPositionY,
    MSETransportTime,
    MSETransportPositionX,
    MSETransportGuidByte5,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportGuidByte7,
    MSETransportTime3,
    MSETransportTime2,
    MSETransportGuidByte2,
    MSETransportGuidByte0,
    MSETransportGuidByte6,
    MSEPositionO,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEPitch,
    MSESplineElevation,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementJumpSequence[] =
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEHasTimestamp,
    MSEGuidBit5,
    MSEHasMovementFlags,
    MSEGuidBit4,
    MSEGuidBit6,
    MSEHasMovementFlags2,
    MSEGuidBit0,
    MSEHasTransportData,
    MSEGuidBit3,
    MSEHasPitch,
    MSEGuidBit7,
    MSEHasFallData,
    MSEHasSpline,
    MSEHasOrientation,
    MSEGuidBit1,
    MSEHasSplineElevation,
    MSEHasUnknownBit,
    MSEGuidBit2,
    MSETransportGuidBit3,
    MSETransportGuidBit7,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSETransportGuidBit5,
    MSETransportGuidBit1,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSEHasFallDirection,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte6,
    MSEGuidByte5,
    MSEGuidByte4,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte3,
    MSEGuidByte7,
    MSEGuidByte1,
    MSETransportGuidByte1,
    MSETransportGuidByte7,
    MSETransportPositionX,
    MSETransportGuidByte4,
    MSETransportTime3,
    MSETransportGuidByte0,
    MSETransportPositionO,
    MSETransportTime2,
    MSETransportTime,
    MSETransportGuidByte6,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportPositionY,
    MSETransportGuidByte3,
    MSETransportGuidByte2,
    MSETransportGuidByte5,
    MSEPitch,
    MSETimestamp,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSESplineElevation,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementSetFacingSequence[] =
{
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEGuidBit6,
    MSEHasTransportData,
    MSEGuidBit4,
    MSEHasSpline,
    MSEGuidBit0,
    MSEHasOrientation,
    MSEHasTimestamp,
    MSEHasPitch,
    MSEHasMovementFlags2,
    MSEGuidBit5,
    MSEGuidBit7,
    MSEGuidBit2,
    MSEHasFallData,
    MSEHasSplineElevation,
    MSEHasMovementFlags,
    MSEGuidBit3,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEHasTransportTime3,
    MSETransportGuidBit3,
    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSEHasTransportTime2,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSEHasFallDirection,
    MSEFlags2,
    MSEFlags,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEGuidByte2,
    MSEGuidByte0,
    MSEGuidByte4,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte3,
    MSETransportGuidByte0,
    MSETransportPositionX,
    MSETransportGuidByte1,
    MSETransportTime2,
    MSETransportGuidByte4,
    MSETransportPositionZ,
    MSETransportPositionO,
    MSETransportGuidByte2,
    MSETransportTime3,
    MSETransportGuidByte3,
    MSETransportSeat,
    MSETransportPositionY,
    MSETransportGuidByte5,
    MSETransportGuidByte6,
    MSETransportTime,
    MSETransportGuidByte7,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSESplineElevation,
    MSEPositionO,
    MSETimestamp,
    MSEPitch,
    MSEEnd,
};

MovementStatusElements MovementSetPitchSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEHasFallData,
    MSEHasMovementFlags,
    MSEGuidBit1,
    MSEHasOrientation,
    MSEGuidBit7,
    MSEGuidBit3,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEHasSplineElevation,
    MSEGuidBit6,
    MSEHasPitch,
    MSEGuidBit4,
    MSEHasSpline,
    MSEGuidBit2,
    MSEHasUnknownBit,
    MSEHasTimestamp,
    MSEGuidBit0,
    MSEGuidBit5,
    MSETransportGuidBit3,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSETransportGuidBit4,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit5,
    MSEHasTransportTime3,
    MSETransportGuidBit7,
    MSEHasTransportTime2,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte3,
    MSEGuidByte7,
    MSEGuidByte1,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte5,
    MSEGuidByte2,
    MSEGuidByte4,
    MSETransportGuidByte4,
    MSETransportGuidByte3,
    MSETransportGuidByte6,
    MSETransportPositionO,
    MSETransportGuidByte1,
    MSETransportTime3,
    MSETransportTime,
    MSETransportGuidByte2,
    MSETransportPositionZ,
    MSETransportGuidByte0,
    MSETransportTime2,
    MSETransportPositionY,
    MSETransportGuidByte5,
    MSETransportSeat,
    MSETransportGuidByte7,
    MSETransportPositionX,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEPitch,
    MSESplineElevation,
    MSETimestamp,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementStartBackwardSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEHasTransportData,
    MSEGuidBit3,
    MSEGuidBit0,
    MSEGuidBit2,
    MSEHasTimestamp,
    MSEGuidBit7,
    MSEHasPitch,
    MSEHasUnknownBit,
    MSEHasMovementFlags,
    MSEHasOrientation,
    MSEHasSpline,
    MSEHasMovementFlags2,
    MSEHasFallData,
    MSEGuidBit5,
    MSEGuidBit1,
    MSEGuidBit4,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSETransportGuidBit7,
    MSETransportGuidBit0,
    MSETransportGuidBit6,
    MSETransportGuidBit5,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSEFlags,
    MSEFlags2,
    MSEHasFallDirection,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEGuidByte4,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte3,
    MSETransportPositionZ,
    MSETransportGuidByte2,
    MSETransportTime3,
    MSETransportGuidByte0,
    MSETransportGuidByte5,
    MSETransportPositionY,
    MSETransportGuidByte1,
    MSETransportPositionX,
    MSETransportTime2,
    MSETransportGuidByte4,
    MSETransportPositionO,
    MSETransportSeat,
    MSETransportGuidByte7,
    MSETransportTime,
    MSETransportGuidByte6,
    MSETransportGuidByte3,
    MSEPitch,
    MSETimestamp,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEPositionO,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartForwardSequence[] =
{
    MSEPositionY,
    MSEPositionZ,
    MSEPositionX,
    MSEGuidBit5,
    MSEGuidBit2,
    MSEGuidBit0,
    MSEHasUnknownBit,
    MSEHasMovementFlags,
    MSEGuidBit7,
    MSEGuidBit3,
    MSEGuidBit1,
    MSEHasOrientation,
    MSEGuidBit6,
    MSEHasSpline,
    MSEHasSplineElevation,
    MSEGuidBit4,
    MSEHasTransportData,
    MSEHasTimestamp,
    MSEHasPitch,
    MSEHasMovementFlags2,
    MSEHasFallData,
    MSEFlags,
    MSETransportGuidBit3,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSETransportGuidBit5,
    MSETransportGuidBit0,
    MSETransportGuidBit7,
    MSETransportGuidBit1,
    MSEHasTransportTime3,
    MSEHasTransportTime2,
    MSEHasFallDirection,
    MSEFlags2,
    MSEGuidByte2,
    MSEGuidByte4,
    MSEGuidByte6,
    MSEGuidByte1,
    MSEGuidByte7,
    MSEGuidByte3,
    MSEGuidByte5,
    MSEGuidByte0,
    MSEFallVerticalSpeed,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallTime,
    MSETransportGuidByte3,
    MSETransportPositionY,
    MSETransportPositionZ,
    MSETransportGuidByte1,
    MSETransportGuidByte4,
    MSETransportGuidByte7,
    MSETransportPositionO,
    MSETransportGuidByte2,
    MSETransportPositionX,
    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportTime,
    MSETransportGuidByte6,
    MSETransportGuidByte0,
    MSETransportSeat,
    MSETransportTime2,
    MSESplineElevation,
    MSEPitch,
    MSEPositionO,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementStartStrafeLeftSequence[] =
{
    MSEPositionZ,
    MSEPositionX,
    MSEPositionY,
    MSEHasSplineElevation,
    MSEGuidBit5,
    MSEHasPitch,
    MSEGuidBit6,
    MSEHasTimestamp,
    MSEGuidBit1,
    MSEHasUnknownBit,
    MSEGuidBit4,
    MSEGuidBit0,
    MSEGuidBit2,
    MSEHasFallData,
    MSEHasOrientation,
    MSEGuidBit3,
    MSEHasMovementFlags2,
    MSEGuidBit7,
    MSEHasSpline,
    MSEHasMovementFlags,
    MSEHasTransportData,
    MSEHasFallDirection,
    MSEHasTransportTime2,
    MSETransportGuidBit7,
    MSEHasTransportTime3,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSETransportGuidBit6,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSETransportGuidBit4,
    MSETransportGuidBit0,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte2,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEGuidByte1,
    MSEGuidByte0,
    MSEGuidByte7,
    MSEGuidByte4,
    MSEGuidByte5,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSETransportSeat,
    MSETransportGuidByte2,
    MSETransportTime2,
    MSETransportGuidByte3,
    MSETransportPositionZ,
    MSETransportTime3,
    MSETransportGuidByte0,
    MSETransportGuidByte7,
    MSETransportPositionY,
    MSETransportGuidByte5,
    MSETransportGuidByte1,
    MSETransportPositionO,
    MSETransportTime,
    MSETransportGuidByte6,
    MSETransportGuidByte4,
    MSETransportPositionX,
    MSETimestamp,
    MSEPositionO,
    MSEPitch,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartStrafeRightSequence[] =
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEHasPitch,
    MSEGuidBit1,
    MSEHasOrientation,
    MSEGuidBit4,
    MSEHasSpline,
    MSEHasUnknownBit,
    MSEGuidBit5,
    MSEHasFallData,
    MSEHasSplineElevation,
    MSEHasTimestamp,
    MSEHasMovementFlags,
    MSEGuidBit2,
    MSEGuidBit7,
    MSEGuidBit6,
    MSEGuidBit3,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEGuidBit0,
    MSETransportGuidBit7,
    MSETransportGuidBit2,
    MSETransportGuidBit3,
    MSETransportGuidBit5,
    MSETransportGuidBit0,
    MSEHasTransportTime2,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte3,
    MSEGuidByte1,
    MSEGuidByte2,
    MSEGuidByte4,
    MSEGuidByte6,
    MSEGuidByte0,
    MSETransportGuidByte5,
    MSETransportGuidByte1,
    MSETransportGuidByte6,
    MSETransportPositionY,
    MSETransportPositionO,
    MSETransportGuidByte0,
    MSETransportGuidByte2,
    MSETransportSeat,
    MSETransportPositionX,
    MSETransportTime3,
    MSETransportTime,
    MSETransportGuidByte4,
    MSETransportGuidByte7,
    MSETransportTime2,
    MSETransportPositionZ,
    MSETransportGuidByte3,
    MSEPitch,
    MSEPositionO,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSETimestamp,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartTurnLeftSequence[] =
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEHasOrientation,
    MSEHasSpline,
    MSEHasMovementFlags,
    MSEGuidBit4,
    MSEGuidBit2,
    MSEHasMovementFlags2,
    MSEGuidBit5,
    MSEGuidBit7,
    MSEHasTransportData,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSEGuidBit0,
    MSEGuidBit3,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEHasFallData,
    MSEFlags2,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSETransportGuidBit0,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSETransportGuidBit6,
    MSEHasFallDirection,
    MSEFlags,
    MSEGuidByte0,
    MSEGuidByte4,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSETransportGuidByte0,
    MSETransportPositionX,
    MSETransportTime,
    MSETransportSeat,
    MSETransportPositionZ,
    MSETransportGuidByte4,
    MSETransportPositionO,
    MSETransportGuidByte2,
    MSETransportGuidByte6,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportPositionY,
    MSETransportTime3,
    MSETransportTime2,
    MSETransportGuidByte5,
    MSETransportGuidByte7,
    MSETimestamp,
    MSEPitch,
    MSEPositionO,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartTurnRightSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEGuidBit3,
    MSEGuidBit5,
    MSEHasMovementFlags,
    MSEHasSpline,
    MSEGuidBit0,
    MSEHasOrientation,
    MSEHasTransportData,
    MSEGuidBit7,
    MSEHasUnknownBit,
    MSEHasMovementFlags2,
    MSEGuidBit1,
    MSEHasTimestamp,
    MSEGuidBit6,
    MSEGuidBit2,
    MSEGuidBit4,
    MSEHasSplineElevation,
    MSEHasPitch,
    MSEHasFallData,
    MSETransportGuidBit1,
    MSEHasTransportTime2,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSETransportGuidBit3,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSETransportGuidBit4,
    MSETransportGuidBit7,
    MSEHasTransportTime3,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte5,
    MSEGuidByte0,
    MSEGuidByte7,
    MSEGuidByte3,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEGuidByte4,
    MSEGuidByte6,
    MSETransportPositionY,
    MSETransportGuidByte0,
    MSETransportGuidByte4,
    MSETransportGuidByte1,
    MSETransportGuidByte6,
    MSETransportGuidByte2,
    MSETransportSeat,
    MSETransportPositionO,
    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportPositionZ,
    MSETransportPositionX,
    MSETransportTime,
    MSETransportGuidByte7,
    MSETransportGuidByte3,
    MSETransportTime2,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSEPitch,
    MSEPositionO,
    MSESplineElevation,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementStopSequence[] =
{
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEGuidBit3,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSEHasSpline,
    MSEHasOrientation,
    MSEGuidBit7,
    MSEHasMovementFlags,
    MSEGuidBit5,
    MSEHasFallData,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEHasTimestamp,
    MSEGuidBit4,
    MSEGuidBit1,
    MSEHasUnknownBit,
    MSEGuidBit2,
    MSEGuidBit0,
    MSEHasPitch,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSETransportGuidBit5,
    MSEHasTransportTime2,
    MSEHasTransportTime3,
    MSETransportGuidBit3,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSETransportGuidBit2,
    MSEFlags,
    MSEFlags2,
    MSEHasFallDirection,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEGuidByte0,
    MSEGuidByte4,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte7,
    MSETransportGuidByte4,
    MSETransportGuidByte7,
    MSETransportTime,
    MSETransportSeat,
    MSETransportPositionZ,
    MSETransportTime3,
    MSETransportGuidByte2,
    MSETransportGuidByte0,
    MSETransportPositionY,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportTime2,
    MSETransportPositionX,
    MSETransportPositionO,
    MSETransportGuidByte5,
    MSETransportGuidByte6,
    MSETimestamp,
    MSEPositionO,
    MSEPitch,
    MSESplineElevation,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEEnd,
};

MovementStatusElements MovementStopStrafeSequence[] =
{
    MSEPositionY,
    MSEPositionZ,
    MSEPositionX,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEGuidBit2,
    MSEHasFallData,
    MSEGuidBit7,
    MSEHasSplineElevation,
    MSEGuidBit3,
    MSEHasOrientation,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEHasMovementFlags,
    MSEHasSpline,
    MSEGuidBit0,
    MSEHasUnknownBit,
    MSEGuidBit6,
    MSEGuidBit5,
    MSEGuidBit1,
    MSEGuidBit4,
    MSETransportGuidBit7,
    MSETransportGuidBit0,
    MSETransportGuidBit4,
    MSETransportGuidBit2,
    MSETransportGuidBit6,
    MSETransportGuidBit5,
    MSEHasTransportTime2,
    MSETransportGuidBit1,
    MSETransportGuidBit3,
    MSEHasTransportTime3,
    MSEFlags,
    MSEHasFallDirection,
    MSEFlags2,
    MSEGuidByte2,
    MSEGuidByte7,
    MSEGuidByte3,
    MSEGuidByte4,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte1,
    MSEGuidByte0,
    MSETransportSeat,
    MSETransportGuidByte6,
    MSETransportPositionZ,
    MSETransportTime3,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportGuidByte2,
    MSETransportGuidByte4,
    MSETransportGuidByte5,
    MSETransportTime,
    MSETransportPositionO,
    MSETransportPositionX,
    MSETransportGuidByte0,
    MSETransportPositionY,
    MSETransportTime2,
    MSETransportGuidByte7,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSESplineElevation,
    MSEPositionO,
    MSEPitch,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementStopTurnSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEGuidBit5,
    MSEGuidBit4,
    MSEHasFallData,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEGuidBit0,
    MSEHasSpline,
    MSEHasMovementFlags,
    MSEGuidBit2,
    MSEGuidBit6,
    MSEHasPitch,
    MSEHasTransportData,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEHasTimestamp,
    MSEHasMovementFlags2,
    MSEHasOrientation,
    MSEGuidBit7,
    MSETransportGuidBit2,
    MSETransportGuidBit7,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSEHasTransportTime2,
    MSETransportGuidBit5,
    MSETransportGuidBit0,
    MSETransportGuidBit3,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSEHasFallDirection,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte3,
    MSEGuidByte2,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte0,
    MSEGuidByte7,
    MSEGuidByte1,
    MSEGuidByte5,
    MSESplineElevation,
    MSETransportPositionX,
    MSETransportGuidByte5,
    MSETransportSeat,
    MSETransportGuidByte2,
    MSETransportGuidByte3,
    MSETransportPositionO,
    MSETransportTime2,
    MSETransportTime3,
    MSETransportGuidByte7,
    MSETransportGuidByte1,
    MSETransportGuidByte0,
    MSETransportGuidByte4,
    MSETransportPositionY,
    MSETransportPositionZ,
    MSETransportTime,
    MSETransportGuidByte6,
    MSEFallTime,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSETimestamp,
    MSEPitch,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementStartAscendSequence[] =
{
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEGuidBit0,
    MSEGuidBit1,
    MSEGuidBit7,
    MSEHasUnknownBit,
    MSEGuidBit5,
    MSEHasTransportData,
    MSEGuidBit2,
    MSEHasSplineElevation,
    MSEHasFallData,
    MSEHasSpline,
    MSEGuidBit3,
    MSEHasMovementFlags2,
    MSEGuidBit6,
    MSEHasMovementFlags,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEHasOrientation,
    MSEGuidBit4,
    MSEFlags,
    MSETransportGuidBit0,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSETransportGuidBit4,
    MSEHasTransportTime2,
    MSETransportGuidBit5,
    MSETransportGuidBit3,
    MSETransportGuidBit7,
    MSEFlags2,
    MSEHasFallDirection,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEGuidByte1,
    MSEGuidByte4,
    MSEGuidByte2,
    MSEGuidByte0,
    MSEGuidByte5,
    MSEGuidByte7,
    MSETransportGuidByte3,
    MSETransportGuidByte5,
    MSETransportGuidByte4,
    MSETransportSeat,
    MSETransportGuidByte2,
    MSETransportPositionO,
    MSETransportPositionY,
    MSETransportGuidByte7,
    MSETransportTime2,
    MSETransportPositionZ,
    MSETransportTime3,
    MSETransportGuidByte6,
    MSETransportTime,
    MSETransportGuidByte0,
    MSETransportGuidByte1,
    MSETransportPositionX,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSEPositionO,
    MSEPitch,
    MSETimestamp,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartDescendSequence[] =
{
    MSEPositionY,
    MSEPositionZ,
    MSEPositionX,
    MSEGuidBit0,
    MSEHasPitch,
    MSEHasFallData,
    MSEGuidBit4,
    MSEHasOrientation,
    MSEHasTimestamp,
    MSEHasMovementFlags2,
    MSEHasMovementFlags,
    MSEGuidBit6,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEHasTransportData,
    MSEHasSpline,
    MSEHasSplineElevation,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEGuidBit7,
    MSEGuidBit2,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSEHasTransportTime2,
    MSETransportGuidBit3,
    MSETransportGuidBit5,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte2,
    MSEGuidByte7,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte4,
    MSEGuidByte3,
    MSEPitch,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportTime3,
    MSETransportGuidByte6,
    MSETransportTime2,
    MSETransportGuidByte1,
    MSETransportTime,
    MSETransportGuidByte4,
    MSETransportPositionY,
    MSETransportPositionX,
    MSETransportGuidByte7,
    MSETransportGuidByte3,
    MSETransportGuidByte5,
    MSETransportGuidByte2,
    MSETransportPositionO,
    MSETransportGuidByte0,
    MSEFallTime,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSETimestamp,
    MSEPositionO,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStartSwimSequence[] =
{
    MSEPositionZ,
    MSEPositionX,
    MSEPositionY,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEGuidBit4,
    MSEGuidBit7,
    MSEHasUnknownBit,
    MSEHasPitch,
    MSEGuidBit0,
    MSEHasOrientation,
    MSEHasMovementFlags,
    MSEHasFallData,
    MSEGuidBit5,
    MSEHasTransportData,
    MSEHasMovementFlags2,
    MSEHasTimestamp,
    MSEGuidBit6,
    MSEGuidBit1,
    MSEHasSpline,
    MSEGuidBit2,
    MSETransportGuidBit2,
    MSETransportGuidBit3,
    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSETransportGuidBit4,
    MSETransportGuidBit0,
    MSEHasTransportTime2,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSEHasTransportTime3,
    MSEFlags,
    MSEHasFallDirection,
    MSEFlags2,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte4,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEGuidByte7,
    MSEPitch,
    MSETransportTime2,
    MSETransportGuidByte2,
    MSETransportPositionY,
    MSETransportGuidByte3,
    MSETransportTime,
    MSETransportPositionX,
    MSETransportPositionO,
    MSETransportTime3,
    MSETransportGuidByte6,
    MSETransportGuidByte5,
    MSETransportGuidByte4,
    MSETransportPositionZ,
    MSETransportGuidByte1,
    MSETransportGuidByte7,
    MSETransportGuidByte0,
    MSETransportSeat,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEPositionO,
    MSETimestamp,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStopSwimSequence[] =
{
    MSEPositionX,
    MSEPositionY,
    MSEPositionZ,
    MSEHasSpline,
    MSEHasPitch,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEGuidBit7,
    MSEHasSplineElevation,
    MSEHasMovementFlags,
    MSEGuidBit4,
    MSEHasMovementFlags2,
    MSEGuidBit2,
    MSEGuidBit6,
    MSEHasTransportData,
    MSEHasOrientation,
    MSEHasUnknownBit,
    MSEHasTimestamp,
    MSEGuidBit1,
    MSEGuidBit0,
    MSEHasFallData,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSETransportGuidBit3,
    MSETransportGuidBit7,
    MSETransportGuidBit1,
    MSETransportGuidBit0,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSETransportGuidBit5,
    MSEFlags,
    MSEFlags2,
    MSEHasFallDirection,
    MSEGuidByte0,
    MSEGuidByte4,
    MSEGuidByte3,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte2,
    MSETransportTime3,
    MSETransportGuidByte4,
    MSETransportTime,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportGuidByte3,
    MSETransportGuidByte2,
    MSETransportPositionY,
    MSETransportGuidByte7,
    MSETransportGuidByte1,
    MSETransportGuidByte6,
    MSETransportGuidByte5,
    MSETransportTime2,
    MSETransportPositionX,
    MSETransportGuidByte0,
    MSETransportPositionO,
    MSEFallVerticalSpeed,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallTime,
    MSETimestamp,
    MSEPitch,
    MSEPositionO,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementStopAscendSequence[] =
{
    MSEPositionZ,
    MSEPositionY,
    MSEPositionX,
    MSEGuidBit3,
    MSEGuidBit2,
    MSEHasFallData,
    MSEGuidBit7,
    MSEHasOrientation,
    MSEHasPitch,
    MSEHasSpline,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEGuidBit4,
    MSEHasMovementFlags,
    MSEGuidBit0,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSEHasTransportData,
    MSEHasMovementFlags2,
    MSEHasTimestamp,
    MSEGuidBit5,
    MSEHasTransportTime2,
    MSEHasTransportTime3,
    MSETransportGuidBit1,
    MSETransportGuidBit3,
    MSETransportGuidBit2,
    MSETransportGuidBit5,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSETransportGuidBit0,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte4,
    MSEGuidByte3,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEGuidByte0,
    MSEGuidByte6,
    MSETransportGuidByte5,
    MSETransportPositionY,
    MSETransportGuidByte7,
    MSETransportGuidByte2,
    MSETransportGuidByte6,
    MSETransportTime2,
    MSETransportTime3,
    MSETransportPositionO,
    MSETransportGuidByte3,
    MSETransportGuidByte4,
    MSETransportSeat,
    MSETransportGuidByte1,
    MSETransportTime,
    MSETransportGuidByte0,
    MSETransportPositionX,
    MSETransportPositionZ,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEPitch,
    MSESplineElevation,
    MSETimestamp,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementStopPitchSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEGuidBit0,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEHasFallData,
    MSEGuidBit2,
    MSEGuidBit4,
    MSEGuidBit7,
    MSEHasPitch,
    MSEHasSpline,
    MSEHasOrientation,
    MSEHasUnknownBit,
    MSEHasMovementFlags2,
    MSEHasSplineElevation,
    MSEGuidBit6,
    MSEGuidBit1,
    MSEHasTimestamp,
    MSEHasTransportData,
    MSEHasMovementFlags,
    MSETransportGuidBit7,
    MSETransportGuidBit0,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit6,
    MSETransportGuidBit3,
    MSEHasTransportTime2,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSEHasFallDirection,
    MSEFlags2,
    MSEFlags,
    MSEGuidByte1,
    MSEGuidByte7,
    MSEGuidByte0,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte3,
    MSEGuidByte5,
    MSEGuidByte2,
    MSETimestamp,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSETransportGuidByte5,
    MSETransportGuidByte2,
    MSETransportTime2,
    MSETransportPositionX,
    MSETransportPositionO,
    MSETransportGuidByte6,
    MSETransportGuidByte3,
    MSETransportGuidByte1,
    MSETransportPositionZ,
    MSETransportTime3,
    MSETransportGuidByte0,
    MSETransportGuidByte4,
    MSETransportTime,
    MSETransportPositionY,
    MSETransportSeat,
    MSETransportGuidByte7,
    MSESplineElevation,
    MSEPositionO,
    MSEPitch,
    MSEEnd,
};

MovementStatusElements MovementStartPitchDownSequence[] =
{
    MSEPositionX,
    MSEPositionZ,
    MSEPositionY,
    MSEHasMovementFlags,
    MSEGuidBit7,
    MSEGuidBit6,
    MSEHasPitch,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEGuidBit4,
    MSEHasTimestamp,
    MSEHasSplineElevation,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEGuidBit0,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEHasSpline,
    MSEHasOrientation,
    MSEHasFallData,
    MSEGuidBit2,
    MSETransportGuidBit1,
    MSETransportGuidBit5,
    MSEHasTransportTime3,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSEHasTransportTime2,
    MSETransportGuidBit0,
    MSETransportGuidBit3,
    MSETransportGuidBit2,
    MSEFlags2,
    MSEHasFallDirection,
    MSEFlags,
    MSEGuidByte3,
    MSEGuidByte7,
    MSEGuidByte0,
    MSEGuidByte5,
    MSEGuidByte2,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte1,
    MSETransportTime3,
    MSETransportGuidByte3,
    MSETransportTime2,
    MSETransportGuidByte5,
    MSETransportGuidByte1,
    MSETransportPositionY,
    MSETransportGuidByte6,
    MSETransportGuidByte4,
    MSETransportTime,
    MSETransportPositionZ,
    MSETransportPositionX,
    MSETransportGuidByte0,
    MSETransportSeat,
    MSETransportGuidByte2,
    MSETransportGuidByte7,
    MSETransportPositionO,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSEPitch,
    MSEPositionO,
    MSESplineElevation,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementStartPitchUpSequence[] =
{
    MSEPositionZ,
    MSEPositionY,
    MSEPositionX,
    MSEGuidBit4,
    MSEHasMovementFlags,
    MSEHasMovementFlags2,
    MSEHasSpline,
    MSEGuidBit2,
    MSEGuidBit6,
    MSEGuidBit3,
    MSEHasUnknownBit,
    MSEHasSplineElevation,
    MSEHasFallData,
    MSEGuidBit0,
    MSEHasTransportData,
    MSEGuidBit1,
    MSEGuidBit5,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEHasOrientation,
    MSEGuidBit7,
    MSEFlags2,
    MSETransportGuidBit7,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSEHasTransportTime2,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSETransportGuidBit0,
    MSETransportGuidBit6,
    MSETransportGuidBit5,
    MSETransportGuidBit2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte0,
    MSEGuidByte3,
    MSEGuidByte4,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte2,
    MSETransportPositionX,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportGuidByte2,
    MSETransportGuidByte0,
    MSETransportTime,
    MSETransportPositionZ,
    MSETransportPositionO,
    MSETransportGuidByte7,
    MSETransportTime2,
    MSETransportSeat,
    MSETransportGuidByte6,
    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportPositionY,
    MSETransportGuidByte4,
    MSEFallTime,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallVerticalSpeed,
    MSEPositionO,
    MSESplineElevation,
    MSEPitch,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementChngTransportSequence[]=
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEGuidBit4,
    MSEGuidBit0,
    MSEGuidBit2,
    MSEHasTransportData,
    MSEHasSpline,
    MSEHasOrientation,
    MSEGuidBit6,
    MSEHasTimestamp,
    MSEGuidBit5,
    MSEGuidBit7,
    MSEHasPitch,
    MSEHasUnknownBit,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEGuidBit1,
    MSEHasFallData,
    MSEHasMovementFlags,
    MSEHasMovementFlags2,
    MSETransportGuidBit3,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSEHasTransportTime2,
    MSETransportGuidBit0,
    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSEFlags,
    MSEFlags2,
    MSEHasFallDirection,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte1,
    MSEGuidByte2,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte0,
    MSEGuidByte3,
    MSETransportPositionY,
    MSETransportSeat,
    MSETransportGuidByte1,
    MSETransportGuidByte0,
    MSETransportGuidByte2,
    MSETransportGuidByte3,
    MSETransportGuidByte6,
    MSETransportPositionZ,
    MSETransportPositionX,
    MSETransportTime3,
    MSETransportTime,
    MSETransportGuidByte7,
    MSETransportGuidByte5,
    MSETransportGuidByte4,
    MSETransportPositionO,
    MSETransportTime2,
    MSEFallTime,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSEPositionO,
    MSEPitch,
    MSESplineElevation,
    MSETimestamp,
    MSEEnd,
};

MovementStatusElements MovementSetRunModeSequence[] =
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEHasTimestamp,
    MSEHasMovementFlags2,
    MSEGuidBit1,
    MSEHasSpline,
    MSEHasMovementFlags,
    MSEGuidBit7,
    MSEHasTransportData,
    MSEHasUnknownBit,
    MSEGuidBit0,
    MSEGuidBit3,
    MSEHasSplineElevation,
    MSEGuidBit5,
    MSEHasPitch,
    MSEGuidBit6,
    MSEGuidBit4,
    MSEHasFallData,
    MSEHasOrientation,
    MSEGuidBit2,
    MSETransportGuidBit6,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSETransportGuidBit5,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSEHasTransportTime2,
    MSETransportGuidBit7,
    MSETransportGuidBit0,
    MSETransportGuidBit2,
    MSEHasFallDirection,
    MSEFlags2,
    MSEFlags,
    MSEGuidByte3,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte7,
    MSEGuidByte4,
    MSEGuidByte1,
    MSEGuidByte5,
    MSEGuidByte2,
    MSEPitch,
    MSETransportTime2,
    MSETransportGuidByte3,
    MSETransportPositionX,
    MSETransportSeat,
    MSETransportGuidByte5,
    MSETransportGuidByte1,
    MSETransportPositionZ,
    MSETransportGuidByte2,
    MSETransportGuidByte7,
    MSETransportPositionO,
    MSETransportGuidByte4,
    MSETransportTime,
    MSETransportTime3,
    MSETransportGuidByte0,
    MSETransportPositionY,
    MSETransportGuidByte6,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSESplineElevation,
    MSETimestamp,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementSetWalkModeSequence[] =
{
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEGuidBit6,
    MSEHasSpline,
    MSEHasTimestamp,
    MSEGuidBit0,
    MSEGuidBit1,
    MSEHasMovementFlags,
    MSEHasPitch,
    MSEGuidBit7,
    MSEHasSplineElevation,
    MSEGuidBit4,
    MSEHasOrientation,
    MSEHasTransportData,
    MSEGuidBit2,
    MSEGuidBit5,
    MSEGuidBit3,
    MSEHasUnknownBit,
    MSEHasMovementFlags2,
    MSEHasFallData,
    MSETransportGuidBit2,
    MSETransportGuidBit0,
    MSETransportGuidBit6,
    MSETransportGuidBit1,
    MSETransportGuidBit3,
    MSEHasTransportTime2,
    MSETransportGuidBit5,
    MSEHasTransportTime3,
    MSETransportGuidBit4,
    MSETransportGuidBit7,
    MSEHasFallDirection,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte7,
    MSEGuidByte3,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte1,
    MSETransportGuidByte2,
    MSETransportGuidByte5,
    MSETransportSeat,
    MSETransportPositionZ,
    MSETransportGuidByte3,
    MSETransportGuidByte6,
    MSETransportGuidByte0,
    MSETransportTime,
    MSETransportGuidByte4,
    MSETransportTime2,
    MSETransportPositionO,
    MSETransportPositionX,
    MSETransportTime3,
    MSETransportGuidByte7,
    MSETransportPositionY,
    MSETransportGuidByte1,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSEFallTime,
    MSESplineElevation,
    MSEPitch,
    MSETimestamp,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MovementFallResetSequence[] =
{
    MSEPositionZ,
    MSEPositionX,
    MSEPositionY,
    MSEGuidBit1,
    MSEHasTimestamp,
    MSEHasMovementFlags,
    MSEHasUnknownBit,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSEHasPitch,
    MSEGuidBit3,
    MSEHasTransportData,
    MSEGuidBit2,
    MSEHasMovementFlags2,
    MSEHasOrientation,
    MSEGuidBit4,
    MSEGuidBit5,
    MSEHasSpline,
    MSEGuidBit7,
    MSEGuidBit0,
    MSEHasFallData,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit5,
    MSETransportGuidBit4,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit6,
    MSETransportGuidBit7,
    MSETransportGuidBit3,
    MSEHasFallDirection,
    MSEFlags2,
    MSEFlags,
    MSEGuidByte4,
    MSEGuidByte0,
    MSEGuidByte1,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte2,
    MSEGuidByte3,
    MSEGuidByte6,
    MSETransportPositionX,
    MSETransportGuidByte7,
    MSETransportGuidByte2,
    MSETransportGuidByte3,
    MSETransportGuidByte5,
    MSETransportPositionY,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportTime2,
    MSETransportGuidByte6,
    MSEHasTransportTime3,
    MSETransportGuidByte0,
    MSETransportPositionO,
    MSETransportGuidByte4,
    MSETransportGuidByte1,
    MSEFallVerticalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallTime,
    MSEPositionO,
    MSETimestamp,
    MSESplineElevation,
    MSEPitch,
    MSEEnd,
};

MovementStatusElements MovementSetCanFlyAckSequence[] =
{
    MSEPositionY,
    MSEMovementCounter,
    MSEPositionX,
    MSEPositionZ,
    MSEGuidBit3,
    MSEHasTimestamp,
    MSEGuidBit4,
    MSEGuidBit0,
    MSEHasOrientation,
    MSEHasFallData,
    MSEGuidBit2,
    MSEGuidBit5,
    MSEHasSplineElevation,
    MSEHasMovementFlags2,
    MSEHasUnknownBit,
    MSEGuidBit7,
    MSEHasSpline,
    MSEGuidBit6,
    MSEGuidBit1,
    MSEHasMovementFlags,
    MSEHasTransportData,
    MSEHasPitch,
    MSETransportGuidBit3,
    MSETransportGuidBit1,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSEHasTransportTime2,
    MSETransportGuidBit0,
    MSETransportGuidBit5,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte1,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte3,
    MSEGuidByte7,
    MSEGuidByte6,
    MSEGuidByte4,
    MSEGuidByte5,
    MSETransportTime2,
    MSETransportGuidByte6,
    MSETransportTime,
    MSETransportTime3,
    MSETransportGuidByte7,
    MSETransportPositionZ,
    MSETransportGuidByte3,
    MSETransportPositionY,
    MSETransportGuidByte5,
    MSETransportPositionX,
    MSETransportGuidByte2,
    MSETransportPositionO,
    MSETransportSeat,
    MSETransportGuidByte1,
    MSETransportGuidByte0,
    MSETransportGuidByte4,
    MSEFallTime,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSEPitch,
    MSEPositionO,
    MSETimestamp,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MovementCastSpellSequence[] =
{
    MSEPositionZ,
    MSEPositionY,
    MSEPositionX,
    MSEHasFallData,
    MSEHasTimestamp,
    MSEHasOrientation,
    MSEHasSpline,
    MSEHasUnknownBit,
    MSEGuidBit6,
    MSEGuidBit4,
    MSEHasMovementFlags2,
    MSEGuidBit3,
    MSEGuidBit5,
    MSEHasSplineElevation,
    MSEHasPitch,
    MSEGuidBit7,
    MSEHasTransportData,
    MSEGuidBit2,
    MSEHasMovementFlags,
    MSEGuidBit1,
    MSEGuidBit0,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSETransportGuidBit5,
    MSEHasTransportTime2,
    MSETransportGuidBit7,
    MSETransportGuidBit4,
    MSEHasTransportTime3,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit3,
    MSEFlags2,
    MSEFlags,
    MSEHasFallDirection,
    MSEGuidByte1,
    MSEGuidByte4,
    MSEGuidByte7,
    MSEGuidByte3,
    MSEGuidByte0,
    MSEGuidByte2,
    MSEGuidByte5,
    MSEGuidByte6,
    MSETransportSeat,
    MSETransportPositionO,
    MSETransportTime,
    MSETransportGuidByte6,
    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportPositionX,
    MSETransportGuidByte4,
    MSETransportPositionZ,
    MSETransportGuidByte2,
    MSETransportGuidByte0,
    MSETransportTime2,
    MSETransportGuidByte1,
    MSETransportGuidByte3,
    MSETransportPositionY,
    MSETransportGuidByte7,
    MSEPositionO,
    MSESplineElevation,
    MSEFallTime,
    MSEFallHorizontalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallVerticalSpeed,
    MSETimestamp,
    MSEPitch,
    MSEEnd,
};

MovementStatusElements MovementSplineDoneSequence[] =
{
    MSEMovementCounter,
    MSEPositionY,
    MSEPositionX,
    MSEPositionZ,
    MSEGuidBit6,
    MSEHasOrientation,
    MSEHasFallData,
    MSEHasTimestamp,
    MSEGuidBit2,
    MSEHasSplineElevation,
    MSEGuidBit4,
    MSEHasTransportData,
    MSEGuidBit3,
    MSEHasMovementFlags,
    MSEGuidBit0,
    MSEHasUnknownBit,
    MSEGuidBit1,
    MSEGuidBit5,
    MSEHasPitch,
    MSEHasSpline,
    MSEHasMovementFlags2,
    MSEGuidBit7,
    MSETransportGuidBit1,
    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSETransportGuidBit3,
    MSETransportGuidBit4,
    MSETransportGuidBit6,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit0,
    MSEHasFallDirection,
    MSEFlags2,
    MSEFlags,
    MSEGuidByte7,
    MSEGuidByte4,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte1,
    MSEGuidByte2,
    MSEGuidByte3,
    MSEFallVerticalSpeed,
    MSEFallSinAngle,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallTime,
    MSEPitch,
    MSEPositionO,
    MSETransportGuidByte1,
    MSETransportTime3,
    MSETransportGuidByte7,
    MSETransportTime,
    MSETransportPositionY,
    MSETransportPositionX,
    MSETransportPositionZ,
    MSETransportSeat,
    MSETransportPositionO,
    MSETransportGuidByte0,
    MSETransportTime2,
    MSETransportGuidByte2,
    MSETransportGuidByte3,
    MSETransportGuidByte5,
    MSETransportGuidByte6,
    MSETransportGuidByte4,
    MSETimestamp,
    MSESplineElevation,
    MSEEnd,
};

MovementStatusElements MoveKnockbackAckSequence[] =
{
    MSEPositionY,
    MSEPositionZ,
    MSEMovementCounter,
    MSEPositionX,
    MSEGuidBit6,
    MSEHasOrientation,
    MSEHasPitch,
    MSEHasSplineElevation,
    MSEGuidBit3,
    MSEGuidBit4,
    MSEGuidBit1,
    MSEGuidBit2,
    MSEHasSpline,
    MSEGuidBit7,
    MSEHasUnknownBit,
    MSEHasMovementFlags2,
    MSEHasTimestamp,
    MSEGuidBit0,
    MSEHasMovementFlags,
    MSEHasTransportData,
    MSEGuidBit5,
    MSEHasFallData,

    MSEFlags,
    MSETransportGuidBit4,
    MSETransportGuidBit1,
    MSEHasTransportTime2,
    MSETransportGuidBit0,
    MSEHasTransportTime3,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSETransportGuidBit3,
    MSETransportGuidBit5,
    MSETransportGuidBit7,
    MSEFlags2,
    MSEHasFallDirection,

    MSEGuidByte4,
    MSEGuidByte5,
    MSEGuidByte1,
    MSEGuidByte6,
    MSEGuidByte0,
    MSEGuidByte3,
    MSEGuidByte2,
    MSEGuidByte7,

    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,

    MSEFallTime,
    MSEFallVerticalSpeed,
    MSETimestamp,

    MSETransportPositionY,
    MSETransportGuidByte4,
    MSETransportTime2,
    MSETransportGuidByte7,
    MSETransportPositionO,
    MSETransportGuidByte6,
    MSETransportTime,
    MSETransportGuidByte3,
    MSETransportGuidByte1,
    MSETransportTime3,
    MSETransportGuidByte2,
    MSETransportPositionZ,
    MSETransportGuidByte0,
    MSETransportGuidByte5,
    MSETransportPositionX,
    MSETransportSeat,

    MSEPitch,
    MSESplineElevation,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements MoveUpdateKnockBackSequence[] =
{
    MSEHasUnknownBit,
    MSEGuidBit4,
    MSEHasMovementFlags,
    MSEHasPitch,
    MSEHasTimestamp,
    MSEGuidBit1,
    MSEGuidBit0,
    MSEGuidBit3,
    MSEGuidBit2,
    MSEGuidBit7,
    MSEHasSpline,
    MSEHasTransportData,

    MSETransportGuidBit7,
    MSETransportGuidBit5,
    MSETransportGuidBit1,
    MSETransportGuidBit6,
    MSEHasTransportTime2,
    MSETransportGuidBit2,
    MSETransportGuidBit4,
    MSETransportGuidBit0,
    MSEHasTransportTime3,
    MSETransportGuidBit3,

    MSEGuidBit5,
    MSEHasSplineElevation,
    MSEHasMovementFlags2,
    MSEGuidBit6,

    MSEFlags,
    MSEHasFallData,
    MSEHasFallDirection,
    MSEHasOrientation,
    MSEFlags2,
    MSEPositionO,
    MSEFallCosAngle,
    MSEFallHorizontalSpeed,
    MSEFallSinAngle,
    MSEFallTime,
    MSEFallVerticalSpeed,
    MSESplineElevation,
    MSEGuidByte3,

    MSETransportGuidByte5,
    MSETransportTime3,
    MSETransportGuidByte7,
    MSETransportSeat,
    MSETransportGuidByte3,
    MSETransportGuidByte6,
    MSETransportPositionZ,
    MSETransportGuidByte1,
    MSETransportPositionY,
    MSETransportPositionX,
    MSETransportGuidByte2,
    MSETransportGuidByte0,
    MSETransportPositionO,
    MSETransportTime,
    MSETransportGuidByte4,
    MSETransportTime2,

    MSEPitch,
    MSEPositionZ,
    MSETimestamp,
    MSEPositionX,
    MSEGuidByte4,
    MSEGuidByte6,
    MSEGuidByte7,
    MSEGuidByte2,
    MSEGuidByte1,
    MSEPositionY,
    MSEGuidByte0,
    MSEGuidByte5,

    MSEEnd,
};

MovementStatusElements MoveNotActiveMoverSequence[] =
{
    MSEPositionZ,
    MSEPositionX,
    MSEPositionY,
    MSEHasMovementFlags2,
    MSEHasTransportData,
    MSEGuidBit6,
    MSEHasSplineElevation,
    MSEGuidBit3,
    MSEHasUnknownBit,
    MSEHasTimestamp,
    MSEGuidBit0,
    MSEHasOrientation,
    MSEGuidBit5,
    MSEHasPitch,
    MSEGuidBit1,
    MSEGuidBit4,
    MSEGuidBit7,
    MSEHasSpline,
    MSEGuidBit2,
    MSEHasFallData,
    MSEHasMovementFlags,
    MSETransportGuidBit4,
    MSETransportGuidBit0,
    MSETransportGuidBit1,
    MSETransportGuidBit6,
    MSETransportGuidBit2,
    MSEHasTransportTime3,
    MSETransportGuidBit5,
    MSETransportGuidBit7,
    MSEHasTransportTime2,
    MSETransportGuidBit3,
    MSEHasFallDirection,
    MSEFlags,
    MSEFlags2,
    MSEGuidByte1,
    MSEGuidByte0,
    MSEGuidByte4,
    MSEGuidByte2,
    MSEGuidByte7,
    MSEGuidByte5,
    MSEGuidByte6,
    MSEGuidByte3,
    MSEFallVerticalSpeed,
    MSEFallCosAngle,
    MSEFallSinAngle,
    MSEFallHorizontalSpeed,
    MSEFallTime,
    MSETransportTime3,
    MSETransportGuidByte1,
    MSETransportTime2,
    MSETransportPositionO,
    MSETransportGuidByte0,
    MSETransportSeat,
    MSETransportGuidByte4,
    MSETransportGuidByte6,
    MSETransportGuidByte3,
    MSETransportGuidByte5,
    MSETransportPositionY,
    MSETransportPositionX,
    MSETransportGuidByte2,
    MSETransportPositionZ,
    MSETransportGuidByte7,
    MSETransportTime,
    MSETimestamp,
    MSESplineElevation,
    MSEPitch,
    MSEPositionO,
    MSEEnd,
};

MovementStatusElements* GetMovementStatusElementsSequence(uint16 opcode)
{
    switch(opcode)
    {
        case CMSG_CAST_SPELL:
        case CMSG_PET_CAST_SPELL:
        case CMSG_USE_ITEM:
            return MovementCastSpellSequence;
        case CMSG_MOVE_CHNG_TRANSPORT:
            return MovementChngTransportSequence;
        case CMSG_MOVE_FALL_LAND:
            return MovementFallLandSequence;
        case CMSG_MOVE_FALL_RESET:
            return MovementFallResetSequence;
        case CMSG_MOVE_JUMP:
            return MovementJumpSequence;
        case CMSG_MOVE_SET_CAN_FLY_ACK:
            return MovementSetCanFlyAckSequence;
        case CMSG_MOVE_SET_FACING:
            return MovementSetFacingSequence;
        case CMSG_MOVE_SET_PITCH:
            return MovementSetPitchSequence;
        case CMSG_MOVE_SET_RUN_MODE:
            return MovementSetRunModeSequence;
        case CMSG_MOVE_SET_WALK_MODE:
            return MovementSetWalkModeSequence;
        case CMSG_MOVE_SPLINE_DONE:
            return MovementSplineDoneSequence;
        case CMSG_MOVE_START_BACKWARD:
            return MovementStartBackwardSequence;
        case CMSG_MOVE_START_FORWARD:
            return MovementStartForwardSequence;
        case CMSG_MOVE_START_STRAFE_LEFT:
            return MovementStartStrafeLeftSequence;
        case CMSG_MOVE_START_STRAFE_RIGHT:
            return MovementStartStrafeRightSequence;
        case CMSG_MOVE_START_TURN_LEFT:
            return MovementStartTurnLeftSequence;
        case CMSG_MOVE_START_TURN_RIGHT:
            return MovementStartTurnRightSequence;
        case CMSG_MOVE_STOP:
            return MovementStopSequence;
        case CMSG_MOVE_STOP_STRAFE:
            return MovementStopStrafeSequence;
        case CMSG_MOVE_STOP_TURN:
            return MovementStopTurnSequence;
        case CMSG_MOVE_START_ASCEND:
            return MovementStartAscendSequence;
        case CMSG_MOVE_START_DESCEND:
            return MovementStartDescendSequence;
        case CMSG_MOVE_START_SWIM:
            return MovementStartSwimSequence;
        case CMSG_MOVE_STOP_SWIM:
            return MovementStopSwimSequence;
        case CMSG_MOVE_STOP_ASCEND:
            return MovementStopAscendSequence;
        case CMSG_MOVE_START_PITCH_DOWN:
            return MovementStartPitchDownSequence;
        case CMSG_MOVE_START_PITCH_UP:
            return MovementStartPitchUpSequence;
        case CMSG_MOVE_STOP_PITCH:
            return MovementStopPitchSequence;
        case MSG_MOVE_HEARTBEAT:
            return MovementHeartBeatSequence;
        case SMSG_PLAYER_MOVE:
            return PlayerMoveSequence;
        case CMSG_MOVE_KNOCK_BACK_ACK:
            return MoveKnockbackAckSequence;
        case SMSG_MOVE_UPDATE_KNOCK_BACK:
            return MoveUpdateKnockBackSequence;
        case CMSG_MOVE_NOT_ACTIVE_MOVER:
            return MoveNotActiveMoverSequence;
    }
    return NULL;
}

#endif //MANGOSSERVER_MOVEMENT_STRUCTURES_H
